
import java.util.Iterator;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;


public class OSController {
    
    //<editor-fold defaultstate="collapsed" desc="Construtor">
    public OSController(){
        
    }
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="Métodos">
    /*
     * Método para buscar id de uma clinica passada por
     * parametro
     */
    public int buscarIDPaciente(String nome_paciente){
        OSDAO osDAO = new OSDAO();
        return osDAO.buscarID_Paciente(nome_paciente);
    }
    /*
     * Método que seta os atributos para cadastrar clinicas
     */
    public boolean cadastrarOS(int id_paciente,int cod_os,String tipo_servico,String servico,int quantidade,String data_entrada, String data_entrega,
                    String valor_unitario,String valor_total,String situacao_servico,String situacao_pagamento,String obs){
        OS os = new OS();
        
        os.setIDPaciente(id_paciente);
        os.setCodOS(cod_os);
        os.setTipo_servico(tipo_servico);
        os.setServico(servico);
        os.setQuantidade(quantidade);
        os.setData_entrada(data_entrada);
        os.setData_entrega(data_entrega);
        os.setValor_unitario(valor_unitario);
        os.setValor_total(valor_total);
        os.setSituacao_servico(situacao_servico);
        os.setSituacao_pagamento(situacao_pagamento);
        os.setObs(obs);
        
        OSDAO osDAO = new OSDAO();
        return osDAO.cadastrarOS(os);
    }
    /*
     * Método para busca de ids apenas pasando a linha
     * do registro selecionado da tabela.
     */
    public int buscarIDdeTabelas(int linha,int coluna){        
        OSDAO osDAO = new OSDAO();
        return osDAO.buscarID_Tabelas(linha,coluna);
    }
    /*
     * Método para listar os campos de uma clinica recebendo por parametro
     * o respectivo id da clinica selecionada na tabela de consulta.
     */
    public void editarOS(int id){
        Vector<OS> vector = new Vector<OS>();
        OSDAO osDAO = new OSDAO();
        OS os = new OS();
        
        os.setIDOs(id);
        vector = osDAO.editarOS(os);
        
        for (Iterator<OS> iterator = vector.iterator(); iterator.hasNext();) {
            
            os = iterator.next();
            frm_ordem_de_servico.tf_codigo.setText(os.getCodOS()+"");
            frm_ordem_de_servico.tf_data_entrada.setText(os.getData_entrada());
            frm_ordem_de_servico.tf_data_entrega.setText(os.getData_entrega());
            frm_ordem_de_servico.tf_valor_unitario.setText(os.getValor_unitario());
            frm_ordem_de_servico.tf_valor_total.setText(os.getValor_total());
            frm_ordem_de_servico.tf_obs.setText(os.getObs());
            frm_ordem_de_servico.cb_paciente.setSelectedItem(os.getNomePaciente());
            frm_ordem_de_servico.cb_tipo_servico.setSelectedItem(os.getTipo_servico());
            frm_ordem_de_servico.cb_servico.setSelectedItem(os.getServico());
            frm_ordem_de_servico.cb_situacao.setSelectedItem(os.getSituacao_servico());
            frm_ordem_de_servico.cb_pagamento.setSelectedItem(os.getSituacao_pagamento());
            frm_ordem_de_servico.cb_quantidade.setSelectedIndex(os.getQuantidade()-1);
        }
    }
    /*
     * Método que recebe os parametros de uma os a serem alterados
     * e atribui ao objeto os para ser acessado pela OSDAO.
     */
    public boolean alterarOS(int id_os,int id_paciente,int cod_os,String tipo_servico,String servico,int quantidade,String data_entrada, String data_entrega,
                    String valor_unitario,String valor_total,String situacao_servico,String situacao_pagamento,String obs){
        
        OS os = new OS();
        
        os.setIDOs(id_os);
        os.setCodOS(cod_os);
        os.setIDPaciente(id_paciente);
        os.setTipo_servico(tipo_servico);
        os.setServico(servico);
        os.setQuantidade(quantidade);
        os.setData_entrada(data_entrada);
        os.setData_entrega(data_entrega);
        os.setValor_unitario(valor_unitario);
        os.setValor_total(valor_total);
        os.setSituacao_servico(situacao_servico);
        os.setSituacao_pagamento(situacao_pagamento);
        os.setObs(obs);
        
        OSDAO osDAO = new OSDAO();
        return osDAO.alterarOS(os);
        
    }
    
    /*
     * Método para buscar dentistas, e setar em uma jtable
     * a partir do tipo de pesquisa e valor a ser pesquisado.
     */
    public void buscarOS(String filtrar_por,String pesquisar){
        OSDAO osDAO = new OSDAO();
        Vector<OS> vector = new Vector<OS>();
        
        vector = osDAO.buscarOS(filtrar_por,pesquisar);
        
        DefaultTableModel model = ((DefaultTableModel)frm_ordem_de_servico.jt_os.getModel()); 
        model.getDataVector().removeAllElements();
        
        int linha=0;
            for (Iterator<OS> iterator = vector.iterator(); iterator.hasNext();) {
                model.addRow(new String[] {});
                OS os = iterator.next();
                frm_ordem_de_servico.jt_os.setValueAt(os.getIDOs(), linha, 0);
                frm_ordem_de_servico.jt_os.setValueAt(os.getCodOS(), linha, 1);
                frm_ordem_de_servico.jt_os.setValueAt(os.getNomePaciente(), linha, 2);
                frm_ordem_de_servico.jt_os.setValueAt(os.getTipo_servico(), linha, 3);
                frm_ordem_de_servico.jt_os.setValueAt(os.getServico(), linha, 4);
                frm_ordem_de_servico.jt_os.setValueAt(os.getQuantidade(), linha, 5);
                frm_ordem_de_servico.jt_os.setValueAt(os.getData_entrada(), linha, 6);
                frm_ordem_de_servico.jt_os.setValueAt(os.getData_entrega(), linha, 7);
                frm_ordem_de_servico.jt_os.setValueAt(os.getValor_unitario(), linha, 8);
                frm_ordem_de_servico.jt_os.setValueAt(os.getValor_total(), linha, 9);
                frm_ordem_de_servico.jt_os.setValueAt(os.getSituacao_servico(), linha, 10);
                frm_ordem_de_servico.jt_os.setValueAt(os.getSituacao_pagamento(), linha, 11);
                frm_ordem_de_servico.jt_os.setValueAt(os.getObs(), linha, 12);
                linha++;
            }   
    }
    public void listarTipoServicoCombo(){
        OSDAO osDAO = new OSDAO();
        osDAO.listar_TipoServicosCombo();
    }
    
    public void listarServicosCombo(int id_tipo_servico){
        OSDAO osDAO = new OSDAO();
        osDAO.listar_ServicosCombo(id_tipo_servico);
    }
    //</editor-fold>
}
